package com.adapter.demo08;

/**
 * 功能：扩展的适配器模式
 * 需求：这就是我们具体的应用了，比如老板要查所有的20-30的女性信息.
 * 外因：外部信息系统人员信息分成三部分，分别是用户基本信息是一个接口，工作信息是一个接口，家庭信息是一个接口，
 * 总共有三个接口三个实现类，想想看如何处理呢？不能再使用我们上面的方法了，为什么呢？Java是不支持多继承的，
 * 你难道想让OuterUserInfo继承三个实现类？此路不通，再想一个办法，对哦，可以使用类关联的办法嘛！声明一个
 * OuterUserInfo实现类，实现IUserInfo接口，通过再关联其他三个实现类不就可以解决这个问题了吗。
 *
 * 对象适配器和类适配器的区别是：类适配器是类间继承，对象适配器是对象的合成关系，也可以说是类的关联关系，这是两者的根本区别。
 * 二者在实际项目中都会经常用到，由于对象适配器是通过类间的关联关系进行耦合的，因此在设计时就可以做到比较灵活，比如修补源角色的隐形缺陷，
 * 关联其他对象等，而类适配器就只能通过覆写源角色的方法进行扩展，在实际项目中，对象适配器使用到场景相对较多
 */
public class Client {


	public static void main(String[] args) {
		//从数据库中查到100个
		for(int i=0; i<100; i++){
            //外系统的人员信息
            IOuterUserBaseInfo baseInfo = new OuterUserBaseInfo();
            IOuterUserHomeInfo homeInfo = new OuterUserHomeInfo();
            IOuterUserOfficeInfo officeInfo = new OuterUserOfficeInfo();
            //传递三个对象
            IUserInfo youngGirl = new OuterUserInfo(baseInfo,officeInfo,homeInfo);

            String mobileNumber = youngGirl.getMobileNumber();
            System.out.println(mobileNumber);
        }
	}

}
